package com.ruoyi.course.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.course.domain.ExamCourse;
import com.ruoyi.course.vo.ExamCourseVo;
import com.ruoyi.course.vo.ExamCourseTagRelationVo;
import com.ruoyi.course.vo.ExamCourseBankDetailVo;

import java.util.List;

/**
 * 课程信息Service接口
 *
 * @author Tellsea
 * @date 2025-09-25
 */
public interface IExamCourseService extends IService<ExamCourse> {

    /**
     * 分页查询
     *
     * @param entity
     * @return
     */
    TableDataInfo<ExamCourseVo> queryList(ExamCourseVo entity);

    /**
     * 查询全部
     *
     * @param entity
     * @return
     */
    List<ExamCourseVo> queryAll(ExamCourseVo entity);

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    ExamCourseVo queryById(Long id);

    /**
     * 批量保存课程标签关系
     *
     * @param entity 包含课程ID和标签ID列表的VO对象
     * @return 是否保存成功
     */
    boolean saveTagRelation(ExamCourseTagRelationVo entity);

    /**
     * 查询课程题库分页列表
     * @param entity
     * @return
     */
    TableDataInfo<ExamCourseBankDetailVo> queryCourseBankList(ExamCourseBankDetailVo entity);

    /**
     * 批量新增课程题库关系
     * @param courseId 课程ID
     * @param bankIds 题库ID列表
     * @return 成功添加的数量
     */
    int addCourseBanks(Long courseId, List<Long> bankIds);

    /**
     * 移除课程题库关系
     * @param courseId 课程ID
     * @param bankId 题库ID
     * @return
     */
    int removeCourseBank(Long courseId, Long bankId);
}
